import axios from 'axios'

// 设置基准路径,github-axios查看文档
axios.defaults.baseURL = 'http://localhost:8888/api/private/v1'

// 添加axios的请求拦截器，为每一个请求都添加一个token 在github axios  --> Interceptors
// 找 then和catch之前你可以拦截req和res的数据并处理
axios.interceptors.request.use(function (config) {
  // config表示一个请求对象，里面有各种参数，这里重点关注请求头headers属性
  // console.log(config)
  // 先从本地获取token
  let mytoken = localStorage.getItem('mytoken')
  if (mytoken) {
    // Authorization字段不能随便，这是一个前台和后台约定好的一个字段
    config.headers.Authorization = mytoken
  }
  // 这个请求对象必须return回去，不然请求不会继续发送
  return config
}, function (error) {
  // 返回请求错误信息的函数
  return Promise.reject(error)
})

// export const login = obj => {
// axios的请求发送完之后，需要将请求的结果返回，返回值是一个promise对象
//   axios.post('http://localhost:8888/api/private/v1/login', obj)
// }

// 简写 原本是返回一个pomise对象 加then(res => res.data)是为了在页面上不用再多加一个data
export const login = obj => axios.post('/login', obj).then(res => res.data)

// 获取用户数据列表
export const getUserList = obj => axios.get('/users', { params: obj }).then(res => res.data)
// 添加用户
export const addUser = obj => axios.post('/users', obj).then(res => res.data)
// 删除用户
export const deleteUser = id => axios.delete(`/users/${id}`).then(res => res.data)
// 修改用户状态
export const changeState = (id, type) => axios.put(`/users/${id}/state/${type}`).then(res => res.data)
// 编辑用户信息
export const editUser = (id, obj) => axios.put(`/users/${id}`, obj).then(res => res.data)

// 获取角色列表
export const getRoles = () => axios.get('/roles').then(res => res.data)

// 分配用户角色
export const grantUserRole = (id, rid) => axios.put(`users/${id}/role`, { rid: rid }).then(res => res.data)

// 获取权限列表
export const getRightList = type => axios.get(`rights/${type}`).then(res => res.data)

// 删除角色指定权限
export const deleteRoleRight = (roleId, rightId) => axios.delete(`roles/${roleId}/rights/${rightId}`).then(res => res.data)

// 授权角色
export const grantRole = (roleId, idsStr) => axios.post(`roles/${roleId}/rights`, { rids: idsStr }).then(res => res.data)

//  动态获取账单 获取菜单权限
export const getMenus = () => axios.get('/menus').then(res => res.data)

// 商品分类数据
export const getCate = (type, pagesize, pagenum) => axios.get('/categories', { params: { type: type, pagesize: pagesize, pagenum: pagenum } }).then(res => res.data)

// 添加商品分类
export const addCate = obj => axios.post('/categories', obj).then(res => res.data)
